package com.finger.gulimall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.finger.common.utils.PageUtils;
import com.finger.gulimall.product.entity.AttrEntity;
import com.finger.gulimall.product.entity.AttrGroupEntity;
import com.finger.gulimall.product.vo.AttrGroupWithAttrsVO;
import com.finger.gulimall.product.vo.AttrRelationVO;
import com.finger.gulimall.product.vo.SkuItemAttrGroupVo;

import java.util.List;
import java.util.Map;

/**
 * 属性分组
 *
 * @author finger
 * @email 909128695@qq.com
 * @date 2022-03-16 12:43:42
 */
public interface AttrGroupService extends IService<AttrGroupEntity> {

    PageUtils queryPage(Map<String, Object> params);

    PageUtils queryPage(Map<String, Object> params, Long cateLogId);

    /**
     * 根据GroupId 查询该分组下的全部属性
     *
     * @param attrgroupId 分组id
     * @return
     */
    List<AttrEntity> getGroupRelation(String attrgroupId);

    /**
     * 删除属性和属性分组中间表中关联的数据，等于属性分组和属性解除关联
     *
     * @param attrRelationVO 属性和属性分组中间表前端VO
     */
    void removeBatchAttrGroupRelation(AttrRelationVO[] attrRelationVO);

    /**
     * 获取当前分类下没有绑定分组的全部属性
     *
     * @param attrgroupId 属性分组Id
     * @return
     */
    PageUtils getNoGroupAttr(Long attrgroupId, Map<String, Object> param);

    /**
     * 保存属性和属性分组中间表关系
     */
    void addRelation(List<AttrRelationVO> attrRelationVO);

    /**
     * 根据分类id获取分类下的全部属性分组和属性分组下的属性
     *
     * @param catelogId 分类id
     * @return 属性分组
     */
    List<AttrGroupWithAttrsVO> getAttrGroupWithAttrs(Long catelogId);

    /**
     * 根据分类id和商品spuid查出spu的属性分组和属性
     *
     * @param catalogId 分类id
     * @param spuId     商品spuid
     * @return 用于页面使用的vo
     */
    List<SkuItemAttrGroupVo> getAttrGroupWithSpuId(Long catalogId, Long spuId);

    /**
     * 根据分类id和商品spuid查出spu可快速展示的属性分组和属性
     * @param catalogId 分类id
     * @param spuId 商品spuid
     * @param quickShow 是否快速显示
     * @return List<SkuItemAttrGroupVo>
     */
//    List<SkuItemAttrGroupVo> getQuickAttrGroupWithSpuId(Long catalogId, Long spuId, int quickShow);
}

